package com.library.util;

import org.springframework.util.StringUtils;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.regex.Pattern;

public class NumberUtils {
    /**
     * 判断是否为正整数
     * @param str
     * @return
     */
    public static boolean isInteger(Object str) {
        if(StringUtils.isEmpty(str)){
            return false;
        }else{
            String number=str.toString();
            Pattern pattern = Pattern.compile("^[1-9]\\d*$");
            return pattern.matcher(number).matches();
        }
    }
    /**
     * 判断是否为正数
     * @param str
     * @return
     */
    /**
     * 判断是否为正数
     * @param str
     * @return
     */
    public static boolean isPositiveNumber(Object str,Boolean limitDecimal,Integer decimalCount) {
        if(StringUtils.isEmpty(str)){
            return false;
        }else{
            //BigDecimal 更改为Double
            if(str instanceof BigDecimal){
                str=((BigDecimal) str).doubleValue();
            }
            if(str instanceof Integer){
                if((Integer)str<=0){
                    return false;
                };
            }
            //防止Double 值为0.0001时 变成1.0E-4
            if(str instanceof Double){
                if((Double)str<=0){
                    return false;
                }
                str=new DecimalFormat("0.#############").format(str);
            }
            String number=str.toString();
            String pattern="";
            if(limitDecimal){
                pattern = "^[0-9]+\\.{0,1}[0-9]{0,"+decimalCount+"}$";//保留小数位数限制
            }else{
                pattern = "^[0-9]+\\.{0,1}[0-9]{0,400000}$";//不限制小数点位数
            }

            return number.matches(pattern);
        }

    }

}
